﻿using NDF.Web.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web.Mvc;

namespace System.Web.Mvc
{
    /// <summary>
    /// 提供针对 ASP.NET MVC 控制器 Action 返回结果输出方法输出 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 的一组扩展。
    /// </summary>
    public static class HttpStatusCodeContentExtensions
    {
        /// <summary>
        /// 创建一个用于表示用户自定义 HttpResponse 输出内容的 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 对象。
        /// </summary>
        /// <param name="controller">表示 ASP.NET MVC 控制器 对象。</param>
        /// <param name="statusCode">表示用户自定义输出内容的 HttpStatusCode。</param>
        /// <returns>一个用于表示用户自定义 HttpResponse 输出内容的 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 对象。</returns>
        public static HttpStatusCodeContentResult StatusCodeContent(this Controller controller, int statusCode)
        {
            return new HttpStatusCodeContentResult(statusCode);
        }

        /// <summary>
        /// 创建一个用于表示用户自定义 HttpResponse 输出内容的 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 对象。
        /// </summary>
        /// <param name="controller">表示 ASP.NET MVC 控制器 对象。</param>
        /// <param name="statusCode">表示用户自定义输出内容的 HttpStatusCode。</param>
        /// <returns>一个用于表示用户自定义 HttpResponse 输出内容的 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 对象。</returns>
        public static HttpStatusCodeContentResult StatusCodeContent(this Controller controller, HttpStatusCode statusCode)
        {
            return new HttpStatusCodeContentResult(statusCode);
        }

        /// <summary>
        /// 创建一个用于表示用户自定义 HttpResponse 输出内容的 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 对象。
        /// </summary>
        /// <param name="controller">表示 ASP.NET MVC 控制器 对象。</param>
        /// <param name="statusCode">表示用户自定义输出内容的 HttpStatusCode。</param>
        /// <param name="statusDescription">表示用户自定义的 HTTP 请求响应内容描述。</param>
        /// <returns>一个用于表示用户自定义 HttpResponse 输出内容的 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 对象。</returns>
        public static HttpStatusCodeContentResult StatusCodeContent(this Controller controller, HttpStatusCode statusCode, string statusDescription)
        {
            return new HttpStatusCodeContentResult(statusCode, statusDescription);
        }

        /// <summary>
        /// 创建一个用于表示用户自定义 HttpResponse 输出内容的 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 对象。
        /// </summary>
        /// <param name="controller">表示 ASP.NET MVC 控制器 对象。</param>
        /// <param name="statusCode">表示用户自定义输出内容的 HttpStatusCode。</param>
        /// <param name="statusDescription">表示用户自定义的 HTTP 请求响应内容描述。</param>
        /// <returns>一个用于表示用户自定义 HttpResponse 输出内容的 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 对象。</returns>
        public static HttpStatusCodeContentResult StatusCodeContent(this Controller controller, int statusCode, string statusDescription)
        {
            return new HttpStatusCodeContentResult(statusCode, statusDescription);
        }

        /// <summary>
        /// 创建一个用于表示用户自定义 HttpResponse 输出内容的 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 对象。
        /// </summary>
        /// <param name="controller">表示 ASP.NET MVC 控制器 对象。</param>
        /// <param name="content">表示用户自定义的 HTTP 请求响应内容。</param>
        /// <returns>一个用于表示用户自定义 HttpResponse 输出内容的 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 对象。</returns>
        public static HttpStatusCodeContentResult StatusCodeContent(this Controller controller, HttpContent content)
        {
            return new HttpStatusCodeContentResult(content);
        }

        /// <summary>
        /// 创建一个用于表示用户自定义 HttpResponse 输出内容的 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 对象。
        /// </summary>
        /// <param name="controller">表示 ASP.NET MVC 控制器 对象。</param>
        /// <param name="statusCode">表示用户自定义输出内容的 HttpStatusCode。</param>
        /// <param name="content">表示用户自定义的 HTTP 请求响应内容。</param>
        /// <returns>一个用于表示用户自定义 HttpResponse 输出内容的 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 对象。</returns>
        public static HttpStatusCodeContentResult StatusCodeContent(this Controller controller, int statusCode, HttpContent content)
        {
            return new HttpStatusCodeContentResult(statusCode, content);
        }

        /// <summary>
        /// 创建一个用于表示用户自定义 HttpResponse 输出内容的 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 对象。
        /// </summary>
        /// <param name="controller">表示 ASP.NET MVC 控制器 对象。</param>
        /// <param name="statusCode">表示用户自定义输出内容的 HttpStatusCode。</param>
        /// <param name="content">表示用户自定义的 HTTP 请求响应内容。</param>
        /// <returns>一个用于表示用户自定义 HttpResponse 输出内容的 <see cref="System.Web.Mvc.HttpStatusCodeContentResult"/> 对象。</returns>
        public static HttpStatusCodeContentResult StatusCodeContent(this Controller controller, HttpStatusCode statusCode, HttpContent content)
        {
            return new HttpStatusCodeContentResult(statusCode, content);
        }
    }
}
